Xen panics when "acpi=off noacpi" is set. Problem is caused by
dereferencing NULL pointer in drhd after calling
acpi_find_matched_drhd_unit. As acpi_find_matched_drhd_unit can
return NULL, checks has to be done before returned value is used.
From: Miroslav Rezanina <mrezanin@redhat.com>
Signed-off-by: Keir Fraser <keir.fraser@eu.citrix.com>
struct iommu *iommu = NULL;
struct ir_ctrl *ir_ctrl;
- drhd = acpi_find_matched_drhd_unit(pdev);
+ if ( (drhd = acpi_find_matched_drhd_unit(pdev)) == NULL )
+ return;
iommu = drhd->iommu;
ir_ctrl = iommu_ir_ctrl(iommu);
struct iommu *iommu = NULL;
struct ir_ctrl *ir_ctrl;
- drhd = acpi_find_matched_drhd_unit(pdev);
+ if ( (drhd = acpi_find_matched_drhd_unit(pdev)) == NULL )
+ return;
iommu = drhd->iommu;
ir_ctrl = iommu_ir_ctrl(iommu);
if (!pdev)
return -ENODEV;
- drhd = acpi_find_matched_drhd_unit(pdev);
+ if ( (drhd = acpi_find_matched_drhd_unit(pdev)) == NULL )
+ return -ENODEV;
pdev_iommu = drhd->iommu;
domain_context_unmap(source, bus, devfn);
for_each_pdev ( source, pdev )
{
drhd = acpi_find_matched_drhd_unit(pdev);
- if ( drhd->iommu == pdev_iommu )
+ if ( drhd && drhd->iommu == pdev_iommu )
{
found = 1;
break;